home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / AWARE_H.PAK / DBCONTRL.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  265 lines

  1. //--------------------------------------------------------
  2. // DBCONTRL.H
  3. // Copyrights (C) 1996 Borland International
  4. // All Rights Reserved
  5. //--------------------------------------------------------
  6.  
  7. #if !defined(DBCONTROL_H_)
  8. #define DBCONTROL_H_
  9.  
  10.  
  11. #include <owl/vbxctl.h>
  12. #include <vdbt/dbdefs.h>
  13. #include <vdbt/dbtype.h>
  14. #include <vdbt/dbpme.h>
  15. #include <vdbt/dbevent.h>
  16.  
  17. //----------------------------------------------------------------------
  18. // TDBControl Class Declaration
  19. //----------------------------------------------------------------------
  20. #ifdef __OWL_VBXCTL_H
  21. class _DBAWARECLASS TDBControl : public TVbxControl {
  22. #else                  // None Owl class
  23. class TDBControl {
  24. #endif __OWL_VBXCTL_H
  25.   DBPMECLASS( TDBControl );
  26.  
  27.   public:
  28.     // constructors
  29.     TDBControl( TWindow*, int, LPCSTR, LPCSTR, int, int, int, int, TModule*x=0 );
  30.     TDBControl( TWindow*, int, TModule*x=0 );
  31.  
  32.  
  33.   public:
  34.     // Common Properties
  35.     DECLARE_DB_PROP_RW2( string, Name );
  36.     DECLARE_DB_PROP_RW0( int,    ComponentIndex, Prop_TDBControl_Index );
  37.     DECLARE_DB_PROP_RW0( long,   Left,           Prop_TDBControl_Left );
  38.     DECLARE_DB_PROP_RW0( long,   Top,            Prop_TDBControl_Top );
  39.     DECLARE_DB_PROP_RW0( long,   Width,          Prop_TDBControl_Width );
  40.     DECLARE_DB_PROP_RW0( long,   Height,         Prop_TDBControl_Height );
  41.     DECLARE_DB_PROP_RW0( Bool,   Visible,        Prop_TDBControl_Visible );
  42.     DECLARE_DB_PROP_RW2( string, Tag );
  43.     DECLARE_DB_PROP_RW1( ENUM, TDragMode
  44.                              ,   DragMode,       Prop_TDBControl_DragMode );
  45.     DECLARE_DB_PROP_RW0( HPIC,   DragIcon,       Prop_TDBControl_DragIcon );
  46.     DECLARE_DB_PROP_RW1( ENUM, TMousePointer
  47.                              ,   Cursor,         Prop_TDBControl_MousePointer );
  48.     DECLARE_DB_PROP_RW0( Bool,   Enabled,        Prop_TDBControl_Enabled );
  49.     DECLARE_DB_PROP_RW0( long,   HelpContext,    Prop_TDBControl_HelpContextID );
  50.     DECLARE_DB_PROP_RO0( int,    TabOrder,       Prop_TDBControl_TabIndex );
  51.     DECLARE_DB_PROP_RW0( Bool,   TabStop,        Prop_TDBControl_TabStop );
  52.     DECLARE_DB_PROP_RW1( ENUM, TAlign
  53.                              ,   Align,          Prop_TDBControl_Align );
  54.     DECLARE_DB_PROP_RW2( TDataSource, DataSource );
  55.  
  56. #ifdef __OWL_VBXCTL_H
  57.     DECLARE_DB_PROP_RW( TWindow*, Parent );
  58.     DECLARE_DB_PROP_RW( TWindow*, Owner );
  59.     DECLARE_DB_PROP_RW( TRect,    BoundsRect );
  60. #endif __OWL_VBXCTL_H
  61.  
  62.  
  63.   public:
  64.     // Common Methods
  65.     void   BeginDrag( bool /* Imediate */ );
  66.     void   BringToFront();
  67.     bool   CanFocus();
  68.     TPoint ClientToScreen( TPoint pt );
  69.     bool   Dragging();
  70.     void   EndDrag( bool Drop );
  71.     bool   Focused();
  72.     int    GetTextBuf( LPSTR Buff, int Len );
  73.     int    GetTextLen();
  74.     void   Hide();
  75.     void   Invalidate();
  76.     void   Refresh();
  77.     void   Repaint();
  78.     void   ScaleBy( int M, int D );
  79.     TPoint ScreenToClient( TPoint pt );
  80.     void   ScrollBy( int DeltaX, int DeltaY );
  81.     void   SendToBack();
  82.     void   SetBounds( int l, int t, int w, int h );
  83.     void   SetTextBuf( LPCSTR lpsz );
  84.     void   Show();
  85.     void   Update();
  86.  
  87.   protected:
  88.     char far* GetClassName();
  89.  
  90. #ifdef __OWL_VBXCTL_H
  91.   DECLARE_RESPONSE_TABLE( TDBControl );
  92. #endif __OWL_VBXCTL_H
  93. };
  94.  
  95. //Inlines
  96. DEFINE_DB_PROP_DATASOURCE( TDBControl )
  97. DEFINE_DB_PROP_STRING( TDBControl, _TDBControl, Name );
  98. DEFINE_DB_PROP_STRING( TDBControl, _TDBControl, Tag );
  99.  
  100. // Properties Getters() and Setters()
  101. inline TDBControl::prParent::operator TWindow*()
  102. {
  103.   TDBControl *pCtl = DBOUTER( Parent );
  104.   return pCtl->GetApplication()->GetWindowPtr( pCtl->GetParent() );
  105. }
  106.  
  107. inline TWindow*& TDBControl::prParent::operator=( TWindow*& Prnt )
  108. {
  109.   DBOUTER( Parent )->SetParent( Prnt );
  110.   return Prnt;
  111. }
  112.  
  113. #ifdef __OWL_VBXCTL_H
  114. inline TDBControl::prOwner::operator TWindow*()
  115. {
  116.   return DBOUTER( Owner )->TWindow::Parent;
  117. }
  118.  
  119. inline TWindow*& TDBControl::prOwner::operator=( TWindow*& Owner )
  120. {
  121.   TDBControl *pCtl = DBOUTER( Owner );
  122.   HWND hSaved = pCtl->HWindow;
  123.  
  124.   pCtl->HWindow = 0;
  125.   pCtl->SetParent( Owner );
  126.   pCtl->HWindow = hSaved;
  127.   return Owner;
  128. }
  129.  
  130. inline TDBControl::prBoundsRect::operator TRect()
  131. {
  132.   TRect Rect;
  133.  
  134.   DBOUTER( Name )->GetWindowRect( Rect );
  135.   return Rect;
  136. }
  137.  
  138. inline TRect& TDBControl::prBoundsRect::operator=( TRect& Rect )
  139. {
  140.   DBOUTER( Name )->SetBounds( Rect.left, Rect.top, Rect.right, Rect.bottom );
  141.   return Rect;
  142. }
  143.  
  144. // Methods
  145. inline void TDBControl::BeginDrag( bool /* Imediate */ )
  146. {
  147.   // Note: Immediate is currently not implemented
  148.   Drag( 1 );
  149. }
  150.  
  151. inline void TDBControl::BringToFront()
  152. {
  153.   BringWindowToTop();
  154. }
  155.  
  156. inline bool TDBControl::CanFocus()
  157. {
  158.   return IsWindowVisible() && IsWindowEnabled();
  159. }
  160.  
  161. inline TPoint TDBControl::ClientToScreen( TPoint pt )
  162. {
  163.   TWindow::ClientToScreen( pt );
  164.   return pt;
  165. }
  166.  
  167. inline bool TDBControl::Dragging()
  168. {
  169.   return bool( SendMessage( ::RegisterWindowMessage( "BDBCtl::Dragging" ), 0, 0L ) );
  170. }
  171.  
  172. inline void TDBControl::EndDrag( bool Drop )
  173. {
  174.   Drag( Drop ? 2 : 0 );
  175. }
  176.  
  177. inline bool TDBControl::Focused()
  178. {
  179.   return GetFocus() == HWindow;
  180. }
  181.  
  182. inline int TDBControl::GetTextBuf( LPSTR Buff, int Len )
  183. {
  184.   return GetWindowText( Buff, Len );
  185. }
  186.  
  187. inline int TDBControl::GetTextLen()
  188. {
  189.   return GetWindowTextLength();
  190. }
  191.  
  192. inline void TDBControl::Hide()
  193. {
  194.   TWindow::Show( SW_HIDE );
  195. }
  196.  
  197. inline void TDBControl::Invalidate()
  198. {
  199.   TWindow::Invalidate( true );
  200. }
  201.  
  202. inline void TDBControl::Refresh()
  203. {
  204.   TWindow::Invalidate( true ); UpdateWindow();
  205. }
  206.  
  207. inline void TDBControl::ScaleBy( int M, int D )
  208. {
  209.   TRect rc;
  210.  
  211.   GetWindowRect( rc );
  212.   SetWindowPos( NULL, 0, 0, rc.Width() * M / D
  213.                           , rc.Height() * M / D, SWP_NOMOVE | SWP_NOZORDER );
  214. }
  215.  
  216. inline void TDBControl::ScrollBy( int DeltaX, int DeltaY )
  217. {
  218.   ScrollWindow( DeltaX, DeltaY );
  219. }
  220.  
  221. inline void TDBControl::Repaint()
  222. {
  223.   TWindow::Invalidate( false );
  224. }
  225.  
  226. inline TPoint TDBControl::ScreenToClient( TPoint pt )
  227. {
  228.   TWindow::ScreenToClient( pt );
  229.   return pt;
  230. }
  231.  
  232. inline void TDBControl::SendToBack()
  233. {
  234.   SetWindowPos( HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
  235. }
  236.  
  237. inline void TDBControl::SetBounds( int l, int t, int w, int h )
  238. {
  239.   SetWindowPos( NULL, l, t, w, h, SWP_NOZORDER );
  240. }
  241.  
  242. inline void TDBControl::SetTextBuf( LPCSTR lpsz )
  243. {
  244.   SetWindowText( lpsz );
  245. }
  246.  
  247. inline void TDBControl::Show()
  248. {
  249.   TWindow::Show( SW_SHOW );
  250. }
  251.  
  252. inline void TDBControl::Update()
  253. {
  254.   UpdateWindow();
  255. }
  256.  
  257. inline char far* TDBControl::GetClassName()
  258. {
  259.   return "DBCONTROL";
  260. }
  261.  
  262. #endif __OWL_VBXCTL_H
  263.  
  264. #endif DBCONTROL_H_
  265.